Video compression (i.e., coding) systems generally employ block processing for most compression operations. A block is a group of neighboring pixels and is considered a “coding unit” for purposes of compression. Theoretically, a larger coding unit size is preferred to take advantage of correlation among immediate neighboring pixels. Certain video coding standards, such as Motion Picture Expert Group (MPEG)-1, MPEG-2, and MPEG-4, use a coding unit size of 4×4, 8×8, or 16×16 pixels (known as a macroblock).
High efficiency video coding (HEVC) is an alternative video coding standard that also employs block processing. As shown in FIG. 1, HEVC partitions an input picture 100 into square blocks referred to as largest coding units (LCUs). Each LCU can be as large as 128×128 pixels, and can be partitioned into smaller square blocks referred to as coding units (CUs). For example, an LCU can be split into four CUs, each being a quarter of the size of the LCU. A CU can be further split into four smaller CUs, each being a quarter of the size of the original CU. This partitioning process can be repeated until certain criteria are met. FIG. 2 illustrates an LCU 200 that is partitioned into seven CUs (202-1, 202-2, 202-3, 202-4, 202-5, 202-6, and 202-7). As shown, CUs 202-1, 202-2, and 202-3 are each a quarter of the size of LCU 200. Further, the upper right quadrant of LCU 200 is split into four CUs 202-4, 202-5, 202-6, and 202-7, which are each a quarter of the size of quadrant.
Each CU includes one or more prediction units (PUs). FIG. 3 illustrates an example CU partition 300 that includes PUs 302-1, 302-2, 302-3, and 302-4. The PUs are used for spatial or temporal predictive coding of CU partition 300. For instance, if CU partition 300 is coded in “intra” mode, each PU 302-1, 302-2, 302-3, and 302-4 has its own prediction direction for spatial prediction. If CU partition 300 is coded in “inter” mode, each PU 302-1, 302-2, 302-3, and 302-4 has its own motion vector(s) and associated reference picture(s) for temporal prediction.
Further, each CU partition of PUs is associated with a set of transform units (TUs). Like other video coding standards, HEVC applies a block transform on residual data to decorrelate the pixels within a block and compact the block energy into low order transform coefficients. However, unlike other standards that apply a single 4×4 or 8×8 transform to a macroblock, HEVC can apply a set of block transforms of different sizes to a single CU. The set of block transforms to be applied to a CU is represented by its associated TUs. By way of example, FIG. 4 illustrates CU partition 300 of FIG. 3 (including PUs 302-1, 302-2, 302-3, and 302-4) with an associated set of TUs 402-1, 402-2, 402-3, 402-4, 402-5, 402-6, and 402-7. These TUs indicate that at least seven separate block transforms should be applied to CU partition 300, where the scope of each block transform is defined by the location and size of each TU.
Although not shown in FIG. 4, each TU 402-1, 402-2, 402-3, 402-4, 402-5, 402-6, and 402-7 may, in some cases, be further separated out into a number of color component-specific TUs. Each color component-specific TU includes elements or samples that are defined for that color channel in corresponding CU partition 300. For instance, in the case of a YCbCr video input, TU 402-1 may be separated out into three distinct color component-specific TUs—one luma TU, one chroma TU, and another chroma TU.
Once a block transform operation has been applied with respect to a particular TU, a two-dimensional array of transform coefficients is generated. The transform coefficients are quantized to reduce the size of the coefficient data. The quantized transform coefficients are then entropy coded, resulting in a final set of compression bits. HEVC currently offers an entropy coding scheme known as context-based adaptive binary arithmetic coding (CABAC). CABAC can provide efficient compression due to its ability to adaptively select context models (i.e., probability models) for arithmetically coding input symbols based on previously-coded symbol statistics. However, the context model selection process in CABAC is complex and requires significantly more processing power for encoding/decoding than other compression schemes.